package com.ruoyi.system.dto;

import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 后台统一推送DTO
 * 用于后台管理员统一推送各种类型的消息，根据模板类型自动识别并组装对应的业务上下文
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
@Data
public class UnifiedPushDTO {

    private Long id;

    /**
     * 模板ID
     * 必填，用于确定消息类型和模板配置
     */
    @NotNull(message = "模板ID不能为空")
    private Long templateId;

    /**
     * 消息类型
     * 必填，用于校验与模板类型的一致性
     * 1-设计资料, 2-主材清单, 3-合同签署, 4-验收信息, 5-财务支付, 6-阶段验收
     */
    @NotNull(message = "消息类型不能为空")
    private Integer msgType;

    /**
     * 关联项目ID
     * 必填，标识消息所属的项目
     */
    @NotNull(message = "项目ID不能为空")
    private Long projectId;

    /**
     * 关联项目名称
     */
    private String projectName;

    /**
     * 指定接收者H5用户ID
     * 可选，不传则按项目绑定的H5用户推送
     */
    private Long h5UserId;
    
    /**
     * 指定接收者H5用户姓名
     * 可选，与h5UserId配合使用
     */
    private String h5UserName;

    /**
     * 关联业务主键
     */
    private String businessId;

    /**
     * 操作人
     */
    private String operator;

    /**
     * 备注
     */
    private String remark;
}


